package com.wyiot.pet.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.wyiot.core.enums.*;
import lombok.Data;
import org.apache.ibatis.type.Alias;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.Random;

/**
 * 运单实体类
 *
 * @author yly
 * @since 2022年04月01日
 */
@Data
@TableName("waybill")
@Alias("waybill")
public class WayBillDO {
    /**
     * 运单id
     */
    @TableId(type = IdType.AUTO)
    private Long wayBillId;
    /**
     * 用户id
     */
    private Long userId;
    /**
     * 运单状态( 1已取件，2运输中，3派送中，4 待签收)
     */
    private WaybillStatusEnum wayBillState;
    /**
     * 运单类型
     */
    private TransportationEnum transportationType;
    /**
     * 运单号
     */
    private String wayBillNumber;
    /**
     * 绑定的订单id
     */
    private Long orderId;
    /**
     * 宠物名
     */
    private String petName;
    /**
     * 宠物大小
     */
    private PetSizeEnum petSize;
    /**
     * 宠物类型
     */
    private PetTypeEnum petType;
    /**
     * 宠物重量
     */
    private PetWeightEnum petWeight;
    /**
     * 宠物过往病史
     */
    private String petMedicalHistory;
    /**
     * 宠物照片
     */
    private String petPhoto;
    /**
     * 宠物疫苗照片
     */
    private String petQuarantinePhoto;
    /**
     * 运输箱id
     */
    private Long boxId;
    /**
     * 寄件地址经度
     */
    private Double beginLongitude;
    /**
     * 寄件地址纬度
     */
    private Double beginLatitude;
    /**
     * 收件地址经度
     */
    private Double finalLongitude;
    /**
     * 收件地址纬度
     */
    private Double finalLatitude;
    /**
     * 温度报警次数
     */
    private Integer tempAlarmTime;
    /**
     * 湿度报警次数
     */
    private Integer wetAlarmTime;
    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 装箱时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date departTime;
    /**
     * 预计到达时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date expectedDeliveryTime;
    /**
     * 派送时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date deliveryTime;
    /**
     * 送达时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;


    public static String getWayBillNumberByTime() {
        String time = String.valueOf(new Date().getTime());
        String SF = "SF";
        String result = "";
        Random random = new Random();
        for (int i = 0; i < 4; i++) {
            result += random.nextInt(10);
        }
        return SF + time + result;
    }


    public void setWayBillNumber() {
        this.wayBillNumber = getWayBillNumberByTime();
    }
}
